YEAR2000 Compliance and YOUR PC Introduction A serious problem was designed into the PC in 1984 (and into many applications, files and databases since) and remains a problem today: most computer systems will not gracefully enter the next decade, only a few years away. The system date will probably be incorrect - without assistance, anyway - on 01-01-2000 or later because of a hardware design flaw. Similarly, many software applications will misbehave as the year 2000 is approached and passed, too, even if the system date is correct. In brief: most applications get the system date from the operating system, whose software-based calendar is initialized at boot from the BIOS firmware, which in turn gets the date from the CMOS RTC, which is hardware. The CMOS RTC maintains a two-digit year, so the BIOS prefixes those two digits with a pair of stored century digits to compose the four-digit year that it provides to the operating system. Since the century digits are not maintained by hardware (even though the digits are set by any system date set command) they are not incremented when the year increments from 99 to 00; the result is that year 1999 will be followed by apparent year 1900. This results in an erroneous system date of 04-01-1980 at the next boot since 1900 is an invalid year to the operating system. Some applications, which take the date from the BIOS rather than the operating system, will therefore receive year 1900. As this is written, machines are being produced that contain BIOS code that exerts measures intended to cure the CMOS RTC century problem; it's probably safe to expect that these will become the norm eventually. By applying a 'windowing' technique to the two digits of the CMOS RTC year, some BIOS's will infer and supply the correct century. For example, year 2000 will be supplied to the operating system and applications even though the indicated CMOS RTC year is 1900. Here's why: First, if the correct date is lost after a reboot, the machine - despite any other behavior - cannot be compliant. Some BIOS's (notably some Award v4.5x-series), for example, will reset the date to any one of a range of dates within a permitted "window" (1994 to 1999, in the Award v4.5x-series case) if the date exceeds those limits when the machine is rebooted. This means that the machine date cannot be correct after 31-12-1999. Such a BIOS cannot be corrected with software, since the date change occurs in the BIOS boot process before any corrective software has access to it; once the BIOS has changed the date, it is not possible to determine the correct date. Second, if the BIOS century increments from 1999 to 2000, then the BIOS (or an applied corrective fix like Y2KPCPro) is correctly receiving or inferring the century from the CMOS RTC year; this means that the BIOS date makes the 1999-2000 transition correctly, and that the operating system (and therefore also most applications) will receive the correct date, and it means that applications whose date is taken directly from the BIOS will also receive the correct date. If the BIOS date increments from 1999 to 1900 (rather than 2000), the date provided to the operating system at the next boot will be invalid (01-01-1900, for example) and will typically result in an OPERATING system date of 04-01-1980 and applications which take the BIOS date will receive 01-01-1900, not 01-01-2000. This BIOS date year 1999-2000 transition problem can be corrected by installing Y2KPCPro on the machine. Other testers of this sort test the CMOS RTC, which essentially always fails to increment from 1999 to 2000. What is important is not the CMOS RTC date itself, but what the BIOS does with the CMOS RTC date, because the operating system uses the BIOS date and some applications use the BIOS date. Although a fundamental design error that causes the year 2000 transition problem exists in the CMOS RTC, the CMOS RTC date itself is unimportant because no common application software uses it directly, so testing the CMOS RTC is immaterial, unnecessary and misleading. The BIOS date is what matters and despite its pervasive century error, the CMOS RTC date doesn't matter. Other testers also test the operating system 1999 to 2000 increment, which will always pass. There is no reason to suspect an operating system date year 2000 failure. [Windows 3.1 File Manager does odd things to the year in its displays, but those are only display artifacts; the underlying date is handled correctly.] Other testers also look at a variety of leap year concerns, none of which need any concern. No PC hardware leap year failures have ever been demonstrated, and there is no reason to suspect that PC hardware leap year errors exist. If another tester fails a leap year test, it is probably the testing program that has failed - not the hardware. What Does Test2000.Exe Do? TEST2000 tests the BIOS year 1999-2000 transition by setting the BIOS date to 31-12-1999 23:59:58 and observing the change of century. A non-compliant BIOS will not change the century, so the apparent date becomes 01-01-1900. A compliant BIOS or a corrected BIOS will increment the century to 20. Since Y2KPCPRO will correct this error, the machine will pass this test if Y2KPCPRO is running. TEST2000 tests the reboot cycle by setting the BIOS date to 2000-02-29 before rebooting the machine, then checking that the date has not been changed by the reboot. The original AUTOEXEC.BAT file will be briefly renamed to AUTOEXEC.Y2K during the test, then restored to AUTOEXEC.BAT for the second reboot. The machine's AUTOEXEC.BAT is never modified; it is only renamed. [Incidentally, any valid after 01-01-2000 will do for this test; the choice of date was arbitrary.] This test will detect those BIOS's that cannot be corrected and which force a 2000+ date to 1994-01-01 or 1980-01-01 at boot. Running TEST2000 Caution: Test2000.Exe will briefly set the system date to future dates. If you run any scheduling software, you should terminate those applications before starting this diagnostic. If you run no software that runs automatically and is triggered by date, you need not take any special precautions. TEST2000.EXE should be run from the ROOT directory of the PC to be tested , and a results file, Test2000.Tst, will be left there unless the NoBoot option is used. If your PC currently runs MS-DOS 6.0 or higher and Windows 3.1x : 1. Close all applications normally, then re-boot your PC. 2. During the reboot process the message "Loading MS-DOS.." will be displayed briefly, during which time you should hit the [F5] key once. This will cause the operating system to be loaded but by-pass the CONFIG.SYS and AUTOEXEC.BAT files. 3. Proceed to step 4 below If your PC currently runs Windows 95: 1. Close all applications normally, then select the option to "Restart the computer " via the "START" button 2. During the reboot process the message "Starting Windows 95..." will be displayed briefly, during which time you should hit the [F8] key once. This will cause the operating system to load and present a number of BOOT options which may be selected via a menu. Select the option for "Command Prompt Only". 3. Proceed to step 4 below 4. Insert the diagnostic diskette into the A: drive, and copy the files from the diskette onto the ROOT directory of the C:\ drive. 5. Run TEST2000 From the C:\> prompt, using of the following command line options: TEST2000 NoBoot To perform only a 1999-2000 BIOS date transition test; TEST2000 NoPause To cycle through the tests without pauses. TEST2000 Will cycle through the tests with pauses. While the diagnostic is running, the original AUTOEXEC.BAT file is renamed AUTOEXEC.Y2K. If, for some reason, the diagnostic fails to complete its tests, you may restore the original AUTOEXEC.BAT file by running UNDO2000.BAT in the root directory. In addition to the onscreen test results, text file Test2000.Tst will contain the test results after the test cycle completes. There are three possibilities: That the machine is compliant (both tests pass), That the machine is not compliant (fails the 1999-2000 transition test), but can be made compliant with Y2KPCPro, That the machine is not compliant (fails the reboot test) and cannot be corrected, except by a BIOS change if one is available. Additionally, you may choose to run the program from a bootable diskette. If it is started from within Windows, you will be given an opportunity to shut Windows down prior to rebooting. What Do the Results Mean? If the machine passes both tests, it is year 2000 compliant: you'll know that applications will receive the correct date at all times, without concern. If the machine fails the reboot test, it cannot correctly recall the last machine date if it was after 31-12-1999. Some Award v4.5x-series BIOS's will force the date to 1994-01-01, for example. These BIOS's must be upgraded, or the machine must be removed from date-sensitive service before the end of the decade, so this is a serious failure. It cannot be corrected with software and will probably require a BIOS upgrade, if one is available, to correct it. If the machine fails the BIOS date year 1999-2000 transition test, unless corrected the operating system date will probably boot to 04-01-1980 on 01-01-2000, and applications that get the date via the BIOS will receive the wrong century. This failure can be corrected by running Y2KPCPRO on the machine. Equivalent assisted manual testing: [Caution: See the caution statement under "Running Test2000.Exe".] Reboot test: C:\>DATE 12-31-1999 C:\>TIME 23:59 - Wait for more than one minute. - Reboot. - Check the DOS date. It should be 01-01-2000. If it's 01-04-1980, the machine exhibits the year 2000 flaw and can be corrected with Y2KPCPRO. If it's any other date (01-01-1994, for example) the machine cannot be corrected except via a BIOS upgrade if one is available. - Reset the date to today's date. Real time 1999-2000 transition test (requires ViewCMOS.Exe v5.11 or later, also on this diskette): C:\>DATE 31-12-1999 C:\>TIME 23:59 C:\>ViewCMOS - Watch the "CMOS RTC date via the BIOS" as it passes midnight. The date should become 01-01-2000. If it becomes 01-01-1900, the BIOS does not correct the date in real time. - Reset the date to today's date. Test2000.Exe is a free, simple and complete PC hardware year 2000 date compliance diagnostic. This program or its documentation can change from time to time. If you did not get this from YEAR2000 Consultants Ltd, or our Web sites on WWW.Y2KPCPRO.COM or WWW.Y2000FIX.COM it's worth a visit to see if there's been a more recent version made available. Information on Y2KPCPro is available from Year 2000 Consultants Limited UK and Europe Website: WWW.Y2000FIX.COM UK: 0800 47 2000 Inter: 44-171-928-3456 Fax: 44-171-928-3233 EMAIL: info@y2000fix.com Copyright notice: ViewCMOS, Y2KPCPro, Test2000.Exe and this file (Test2000.Txt contained on the enclosed diskette) are Copyright 1997, RighTime, Miami. All rights are reserved. Permission is granted to freely copy, distribute and use this program in its complete, unmodified form including this text file. No warranty of performance or suitability is expressed or implied. Every effort has been made to make this software program deliver as this documentation describes, but the correctness for your application or environment cannot be assured. We cannot assume responsibility for the failure of this software program, nor for ny consequence of its use. You are encouraged to test the applicability of this program to your requirements and to verify the test results to your satisfaction with the assisted manual tests, as described above, or with other valid testing procedures. If you encounter trouble, or have any feedback or questions about this diagnostic, please contact us. Year 2000 Consultants Limited Website: WWW.Y2000FIX.COM UK: 0800 47 2000 Inter: 44-171-928-3456 Fax: 44-171-928-3233 EMAIL: support@y2000fix.com